{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from numpy import *\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# an example"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "a = np.arange(15).reshape(3,5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[ 0,  1,  2,  3,  4],\n       [ 5,  6,  7,  8,  9],\n       [10, 11, 12, 13, 14]])"
     },
     "metadata": {},
     "execution_count": 4
    }
   ],
   "source": [
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "(3, 5)"
     },
     "metadata": {},
     "execution_count": 5
    }
   ],
   "source": [
    "a.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "2"
     },
     "metadata": {},
     "execution_count": 6
    }
   ],
   "source": [
    "a.ndim"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "'int64'"
     },
     "metadata": {},
     "execution_count": 7
    }
   ],
   "source": [
    "a.dtype.name"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "8"
     },
     "metadata": {},
     "execution_count": 8
    }
   ],
   "source": [
    "a.itemsize"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "15"
     },
     "metadata": {},
     "execution_count": 9
    }
   ],
   "source": [
    "a.size"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "numpy.ndarray"
     },
     "metadata": {},
     "execution_count": 10
    }
   ],
   "source": [
    "type(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "b = np.array([6,7,8])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "numpy.ndarray"
     },
     "metadata": {},
     "execution_count": 12
    }
   ],
   "source": [
    "type(b)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Array Creation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 创建array可以使用常规的python数组列表或元祖\n",
    "* 在创建array时可以指定数组形式，例如复数或者整型变量等\n",
    "* numpy提供了初始化创建数组的方法，zeros创建一个元素全为0数组，ones创建一个元素全为一的数组，empty创建一个随机数组，其元素取决于存储空间的状态，创建的元素类型默认是`float64`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[1.+0.j, 2.+0.j],\n       [3.+0.j, 4.+0.j]])"
     },
     "metadata": {},
     "execution_count": 13
    }
   ],
   "source": [
    "c = np.array([[1,2], [3, 4]], dtype=complex)\n",
    "c"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[0., 0., 0., 0.],\n       [0., 0., 0., 0.],\n       [0., 0., 0., 0.]])"
     },
     "metadata": {},
     "execution_count": 14
    }
   ],
   "source": [
    "np.zeros((3,4))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[[1, 1, 1, 1],\n        [1, 1, 1, 1],\n        [1, 1, 1, 1]],\n\n       [[1, 1, 1, 1],\n        [1, 1, 1, 1],\n        [1, 1, 1, 1]]], dtype=int16)"
     },
     "metadata": {},
     "execution_count": 15
    }
   ],
   "source": [
    "np.ones((2,3,4),dtype=np.int16) # 指定为int16类型的变量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[2.17719e-316, 0.00000e+000, 0.00000e+000],\n       [0.00000e+000, 0.00000e+000, 0.00000e+000]])"
     },
     "metadata": {},
     "execution_count": 16
    }
   ],
   "source": [
    "np.empty((2,3))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`np.arange` 类似于range的函数，不过返回的是arrays而不是python列表"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([10, 15, 20, 25])"
     },
     "metadata": {},
     "execution_count": 17
    }
   ],
   "source": [
    "np.arange(10,30,5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. , 1.1, 1.2,\n       1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9])"
     },
     "metadata": {},
     "execution_count": 18
    }
   ],
   "source": [
    "np.arange(0,2,0.1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "当`arange`用浮点参数使用时，它通常是不可能预测得到的元件的数量，由于有限浮点精度。因此，通常最好使用将`linspace`所需元素数量而不是步骤数量作为参数的函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([0.  , 0.25, 0.5 , 0.75, 1.  , 1.25, 1.5 , 1.75, 2.  ])"
     },
     "metadata": {},
     "execution_count": 19
    }
   ],
   "source": [
    "np.linspace(0,2,9)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.linspace(0, 2*pi, 100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "f = np.sin(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "output_type": "display_data",
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<!-- Created with matplotlib (https://matplotlib.org/) -->\n<svg height=\"248.518125pt\" version=\"1.1\" viewBox=\"0 0 386.845312 248.518125\" width=\"386.845312pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <defs>\n  <style type=\"text/css\">\n*{stroke-linecap:butt;stroke-linejoin:round;}\n  </style>\n </defs>\n <g id=\"figure_1\">\n  <g id=\"patch_1\">\n   <path d=\"M 0 248.518125 \nL 386.845312 248.518125 \nL 386.845312 0 \nL 0 0 \nz\n\" style=\"fill:none;\"/>\n  </g>\n  <g id=\"axes_1\">\n   <g id=\"patch_2\">\n    <path d=\"M 44.845313 224.64 \nL 379.645313 224.64 \nL 379.645313 7.2 \nL 44.845313 7.2 \nz\n\" style=\"fill:#ffffff;\"/>\n   </g>\n   <g id=\"matplotlib.axis_1\">\n    <g id=\"xtick_1\">\n     <g id=\"line2d_1\">\n      <defs>\n       <path d=\"M 0 0 \nL 0 3.5 \n\" id=\"mb9b6b6acc6\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n      </defs>\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"60.063494\" xlink:href=\"#mb9b6b6acc6\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_1\">\n      <!-- 0 -->\n      <defs>\n       <path d=\"M 31.78125 66.40625 \nQ 24.171875 66.40625 20.328125 58.90625 \nQ 16.5 51.421875 16.5 36.375 \nQ 16.5 21.390625 20.328125 13.890625 \nQ 24.171875 6.390625 31.78125 6.390625 \nQ 39.453125 6.390625 43.28125 13.890625 \nQ 47.125 21.390625 47.125 36.375 \nQ 47.125 51.421875 43.28125 58.90625 \nQ 39.453125 66.40625 31.78125 66.40625 \nz\nM 31.78125 74.21875 \nQ 44.046875 74.21875 50.515625 64.515625 \nQ 56.984375 54.828125 56.984375 36.375 \nQ 56.984375 17.96875 50.515625 8.265625 \nQ 44.046875 -1.421875 31.78125 -1.421875 \nQ 19.53125 -1.421875 13.0625 8.265625 \nQ 6.59375 17.96875 6.59375 36.375 \nQ 6.59375 54.828125 13.0625 64.515625 \nQ 19.53125 74.21875 31.78125 74.21875 \nz\n\" id=\"DejaVuSans-48\"/>\n      </defs>\n      <g transform=\"translate(56.882244 239.238437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_2\">\n     <g id=\"line2d_2\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"108.504472\" xlink:href=\"#mb9b6b6acc6\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_2\">\n      <!-- 1 -->\n      <defs>\n       <path d=\"M 12.40625 8.296875 \nL 28.515625 8.296875 \nL 28.515625 63.921875 \nL 10.984375 60.40625 \nL 10.984375 69.390625 \nL 28.421875 72.90625 \nL 38.28125 72.90625 \nL 38.28125 8.296875 \nL 54.390625 8.296875 \nL 54.390625 0 \nL 12.40625 0 \nz\n\" id=\"DejaVuSans-49\"/>\n      </defs>\n      <g transform=\"translate(105.323222 239.238437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-49\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_3\">\n     <g id=\"line2d_3\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"156.945449\" xlink:href=\"#mb9b6b6acc6\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_3\">\n      <!-- 2 -->\n      <defs>\n       <path d=\"M 19.1875 8.296875 \nL 53.609375 8.296875 \nL 53.609375 0 \nL 7.328125 0 \nL 7.328125 8.296875 \nQ 12.9375 14.109375 22.625 23.890625 \nQ 32.328125 33.6875 34.8125 36.53125 \nQ 39.546875 41.84375 41.421875 45.53125 \nQ 43.3125 49.21875 43.3125 52.78125 \nQ 43.3125 58.59375 39.234375 62.25 \nQ 35.15625 65.921875 28.609375 65.921875 \nQ 23.96875 65.921875 18.8125 64.3125 \nQ 13.671875 62.703125 7.8125 59.421875 \nL 7.8125 69.390625 \nQ 13.765625 71.78125 18.9375 73 \nQ 24.125 74.21875 28.421875 74.21875 \nQ 39.75 74.21875 46.484375 68.546875 \nQ 53.21875 62.890625 53.21875 53.421875 \nQ 53.21875 48.921875 51.53125 44.890625 \nQ 49.859375 40.875 45.40625 35.40625 \nQ 44.1875 33.984375 37.640625 27.21875 \nQ 31.109375 20.453125 19.1875 8.296875 \nz\n\" id=\"DejaVuSans-50\"/>\n      </defs>\n      <g transform=\"translate(153.764199 239.238437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-50\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_4\">\n     <g id=\"line2d_4\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"205.386426\" xlink:href=\"#mb9b6b6acc6\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_4\">\n      <!-- 3 -->\n      <defs>\n       <path d=\"M 40.578125 39.3125 \nQ 47.65625 37.796875 51.625 33 \nQ 55.609375 28.21875 55.609375 21.1875 \nQ 55.609375 10.40625 48.1875 4.484375 \nQ 40.765625 -1.421875 27.09375 -1.421875 \nQ 22.515625 -1.421875 17.65625 -0.515625 \nQ 12.796875 0.390625 7.625 2.203125 \nL 7.625 11.71875 \nQ 11.71875 9.328125 16.59375 8.109375 \nQ 21.484375 6.890625 26.8125 6.890625 \nQ 36.078125 6.890625 40.9375 10.546875 \nQ 45.796875 14.203125 45.796875 21.1875 \nQ 45.796875 27.640625 41.28125 31.265625 \nQ 36.765625 34.90625 28.71875 34.90625 \nL 20.21875 34.90625 \nL 20.21875 43.015625 \nL 29.109375 43.015625 \nQ 36.375 43.015625 40.234375 45.921875 \nQ 44.09375 48.828125 44.09375 54.296875 \nQ 44.09375 59.90625 40.109375 62.90625 \nQ 36.140625 65.921875 28.71875 65.921875 \nQ 24.65625 65.921875 20.015625 65.03125 \nQ 15.375 64.15625 9.8125 62.3125 \nL 9.8125 71.09375 \nQ 15.4375 72.65625 20.34375 73.4375 \nQ 25.25 74.21875 29.59375 74.21875 \nQ 40.828125 74.21875 47.359375 69.109375 \nQ 53.90625 64.015625 53.90625 55.328125 \nQ 53.90625 49.265625 50.4375 45.09375 \nQ 46.96875 40.921875 40.578125 39.3125 \nz\n\" id=\"DejaVuSans-51\"/>\n      </defs>\n      <g transform=\"translate(202.205176 239.238437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-51\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_5\">\n     <g id=\"line2d_5\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"253.827403\" xlink:href=\"#mb9b6b6acc6\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_5\">\n      <!-- 4 -->\n      <defs>\n       <path d=\"M 37.796875 64.3125 \nL 12.890625 25.390625 \nL 37.796875 25.390625 \nz\nM 35.203125 72.90625 \nL 47.609375 72.90625 \nL 47.609375 25.390625 \nL 58.015625 25.390625 \nL 58.015625 17.1875 \nL 47.609375 17.1875 \nL 47.609375 0 \nL 37.796875 0 \nL 37.796875 17.1875 \nL 4.890625 17.1875 \nL 4.890625 26.703125 \nz\n\" id=\"DejaVuSans-52\"/>\n      </defs>\n      <g transform=\"translate(250.646153 239.238437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-52\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_6\">\n     <g id=\"line2d_6\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"302.26838\" xlink:href=\"#mb9b6b6acc6\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_6\">\n      <!-- 5 -->\n      <defs>\n       <path d=\"M 10.796875 72.90625 \nL 49.515625 72.90625 \nL 49.515625 64.59375 \nL 19.828125 64.59375 \nL 19.828125 46.734375 \nQ 21.96875 47.46875 24.109375 47.828125 \nQ 26.265625 48.1875 28.421875 48.1875 \nQ 40.625 48.1875 47.75 41.5 \nQ 54.890625 34.8125 54.890625 23.390625 \nQ 54.890625 11.625 47.5625 5.09375 \nQ 40.234375 -1.421875 26.90625 -1.421875 \nQ 22.3125 -1.421875 17.546875 -0.640625 \nQ 12.796875 0.140625 7.71875 1.703125 \nL 7.71875 11.625 \nQ 12.109375 9.234375 16.796875 8.0625 \nQ 21.484375 6.890625 26.703125 6.890625 \nQ 35.15625 6.890625 40.078125 11.328125 \nQ 45.015625 15.765625 45.015625 23.390625 \nQ 45.015625 31 40.078125 35.4375 \nQ 35.15625 39.890625 26.703125 39.890625 \nQ 22.75 39.890625 18.8125 39.015625 \nQ 14.890625 38.140625 10.796875 36.28125 \nz\n\" id=\"DejaVuSans-53\"/>\n      </defs>\n      <g transform=\"translate(299.08713 239.238437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-53\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_7\">\n     <g id=\"line2d_7\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"350.709358\" xlink:href=\"#mb9b6b6acc6\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_7\">\n      <!-- 6 -->\n      <defs>\n       <path d=\"M 33.015625 40.375 \nQ 26.375 40.375 22.484375 35.828125 \nQ 18.609375 31.296875 18.609375 23.390625 \nQ 18.609375 15.53125 22.484375 10.953125 \nQ 26.375 6.390625 33.015625 6.390625 \nQ 39.65625 6.390625 43.53125 10.953125 \nQ 47.40625 15.53125 47.40625 23.390625 \nQ 47.40625 31.296875 43.53125 35.828125 \nQ 39.65625 40.375 33.015625 40.375 \nz\nM 52.59375 71.296875 \nL 52.59375 62.3125 \nQ 48.875 64.0625 45.09375 64.984375 \nQ 41.3125 65.921875 37.59375 65.921875 \nQ 27.828125 65.921875 22.671875 59.328125 \nQ 17.53125 52.734375 16.796875 39.40625 \nQ 19.671875 43.65625 24.015625 45.921875 \nQ 28.375 48.1875 33.59375 48.1875 \nQ 44.578125 48.1875 50.953125 41.515625 \nQ 57.328125 34.859375 57.328125 23.390625 \nQ 57.328125 12.15625 50.6875 5.359375 \nQ 44.046875 -1.421875 33.015625 -1.421875 \nQ 20.359375 -1.421875 13.671875 8.265625 \nQ 6.984375 17.96875 6.984375 36.375 \nQ 6.984375 53.65625 15.1875 63.9375 \nQ 23.390625 74.21875 37.203125 74.21875 \nQ 40.921875 74.21875 44.703125 73.484375 \nQ 48.484375 72.75 52.59375 71.296875 \nz\n\" id=\"DejaVuSans-54\"/>\n      </defs>\n      <g transform=\"translate(347.528108 239.238437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-54\"/>\n      </g>\n     </g>\n    </g>\n   </g>\n   <g id=\"matplotlib.axis_2\">\n    <g id=\"ytick_1\">\n     <g id=\"line2d_8\">\n      <defs>\n       <path d=\"M 0 0 \nL -3.5 0 \n\" id=\"mcfddd06e67\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n      </defs>\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"44.845313\" xlink:href=\"#mcfddd06e67\" y=\"214.768806\"/>\n      </g>\n     </g>\n     <g id=\"text_8\">\n      <!-- −1.00 -->\n      <defs>\n       <path d=\"M 10.59375 35.5 \nL 73.1875 35.5 \nL 73.1875 27.203125 \nL 10.59375 27.203125 \nz\n\" id=\"DejaVuSans-8722\"/>\n       <path d=\"M 10.6875 12.40625 \nL 21 12.40625 \nL 21 0 \nL 10.6875 0 \nz\n\" id=\"DejaVuSans-46\"/>\n      </defs>\n      <g transform=\"translate(7.2 218.568025)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-8722\"/>\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-49\"/>\n       <use x=\"147.412109\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"179.199219\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"242.822266\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_2\">\n     <g id=\"line2d_9\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"44.845313\" xlink:href=\"#mcfddd06e67\" y=\"190.056604\"/>\n      </g>\n     </g>\n     <g id=\"text_9\">\n      <!-- −0.75 -->\n      <defs>\n       <path d=\"M 8.203125 72.90625 \nL 55.078125 72.90625 \nL 55.078125 68.703125 \nL 28.609375 0 \nL 18.3125 0 \nL 43.21875 64.59375 \nL 8.203125 64.59375 \nz\n\" id=\"DejaVuSans-55\"/>\n      </defs>\n      <g transform=\"translate(7.2 193.855823)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-8722\"/>\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"147.412109\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"179.199219\" xlink:href=\"#DejaVuSans-55\"/>\n       <use x=\"242.822266\" xlink:href=\"#DejaVuSans-53\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_3\">\n     <g id=\"line2d_10\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"44.845313\" xlink:href=\"#mcfddd06e67\" y=\"165.344403\"/>\n      </g>\n     </g>\n     <g id=\"text_10\">\n      <!-- −0.50 -->\n      <g transform=\"translate(7.2 169.143622)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-8722\"/>\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"147.412109\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"179.199219\" xlink:href=\"#DejaVuSans-53\"/>\n       <use x=\"242.822266\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_4\">\n     <g id=\"line2d_11\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"44.845313\" xlink:href=\"#mcfddd06e67\" y=\"140.632201\"/>\n      </g>\n     </g>\n     <g id=\"text_11\">\n      <!-- −0.25 -->\n      <g transform=\"translate(7.2 144.43142)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-8722\"/>\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"147.412109\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"179.199219\" xlink:href=\"#DejaVuSans-50\"/>\n       <use x=\"242.822266\" xlink:href=\"#DejaVuSans-53\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_5\">\n     <g id=\"line2d_12\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"44.845313\" xlink:href=\"#mcfddd06e67\" y=\"115.92\"/>\n      </g>\n     </g>\n     <g id=\"text_12\">\n      <!-- 0.00 -->\n      <g transform=\"translate(15.579688 119.719219)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_6\">\n     <g id=\"line2d_13\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"44.845313\" xlink:href=\"#mcfddd06e67\" y=\"91.207799\"/>\n      </g>\n     </g>\n     <g id=\"text_13\">\n      <!-- 0.25 -->\n      <g transform=\"translate(15.579688 95.007017)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-50\"/>\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-53\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_7\">\n     <g id=\"line2d_14\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"44.845313\" xlink:href=\"#mcfddd06e67\" y=\"66.495597\"/>\n      </g>\n     </g>\n     <g id=\"text_14\">\n      <!-- 0.50 -->\n      <g transform=\"translate(15.579688 70.294816)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-53\"/>\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_8\">\n     <g id=\"line2d_15\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"44.845313\" xlink:href=\"#mcfddd06e67\" y=\"41.783396\"/>\n      </g>\n     </g>\n     <g id=\"text_15\">\n      <!-- 0.75 -->\n      <g transform=\"translate(15.579688 45.582614)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-55\"/>\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-53\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_9\">\n     <g id=\"line2d_16\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"44.845313\" xlink:href=\"#mcfddd06e67\" y=\"17.071194\"/>\n      </g>\n     </g>\n     <g id=\"text_16\">\n      <!-- 1.00 -->\n      <g transform=\"translate(15.579688 20.870413)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-49\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n   </g>\n   <g id=\"line2d_17\">\n    <path clip-path=\"url(#pa670338162)\" d=\"M 60.063494 115.92 \nL 63.137874 109.650621 \nL 66.212255 103.406487 \nL 69.286635 97.21274 \nL 72.361015 91.094321 \nL 75.435395 85.075866 \nL 78.509775 79.18161 \nL 81.584155 73.435286 \nL 84.658536 67.860033 \nL 87.732916 62.478301 \nL 90.807296 57.311759 \nL 93.881676 52.381212 \nL 96.956056 47.706514 \nL 100.030436 43.306487 \nL 103.104817 39.198849 \nL 106.179197 35.40014 \nL 109.253577 31.925656 \nL 112.327957 28.789388 \nL 115.402337 26.003963 \nL 118.476717 23.580599 \nL 121.551098 21.529054 \nL 124.625478 19.857587 \nL 127.699858 18.57293 \nL 130.774238 17.680254 \nL 133.848618 17.183156 \nL 136.922998 17.083636 \nL 139.997379 17.382096 \nL 143.071759 18.077332 \nL 146.146139 19.166547 \nL 149.220519 20.645353 \nL 152.294899 22.507797 \nL 155.369279 24.746379 \nL 158.44366 27.352085 \nL 161.51804 30.314423 \nL 164.59242 33.621464 \nL 167.6668 37.259892 \nL 170.74118 41.215057 \nL 173.81556 45.471032 \nL 176.889941 50.01068 \nL 179.964321 54.815722 \nL 183.038701 59.86681 \nL 186.113081 65.143603 \nL 189.187461 70.624855 \nL 192.261841 76.288495 \nL 195.336222 82.111717 \nL 198.410602 88.071073 \nL 201.484982 94.142567 \nL 204.559362 100.301751 \nL 207.633742 106.523824 \nL 210.708122 112.783732 \nL 213.782503 119.056268 \nL 216.856883 125.316176 \nL 219.931263 131.538249 \nL 223.005643 137.697433 \nL 226.080023 143.768927 \nL 229.154403 149.728283 \nL 232.228784 155.551505 \nL 235.303164 161.215145 \nL 238.377544 166.696397 \nL 241.451924 171.97319 \nL 244.526304 177.024278 \nL 247.600684 181.82932 \nL 250.675065 186.368968 \nL 253.749445 190.624943 \nL 256.823825 194.580108 \nL 259.898205 198.218536 \nL 262.972585 201.525577 \nL 266.046965 204.487915 \nL 269.121346 207.093621 \nL 272.195726 209.332203 \nL 275.270106 211.194647 \nL 278.344486 212.673453 \nL 281.418866 213.762668 \nL 284.493246 214.457904 \nL 287.567627 214.756364 \nL 290.642007 214.656844 \nL 293.716387 214.159746 \nL 296.790767 213.26707 \nL 299.865147 211.982413 \nL 302.939527 210.310946 \nL 306.013908 208.259401 \nL 309.088288 205.836037 \nL 312.162668 203.050612 \nL 315.237048 199.914344 \nL 318.311428 196.43986 \nL 321.385808 192.641151 \nL 324.460189 188.533513 \nL 327.534569 184.133486 \nL 330.608949 179.458788 \nL 333.683329 174.528241 \nL 336.757709 169.361699 \nL 339.832089 163.979967 \nL 342.90647 158.404714 \nL 345.98085 152.65839 \nL 349.05523 146.764134 \nL 352.12961 140.745679 \nL 355.20399 134.62726 \nL 358.27837 128.433513 \nL 361.352751 122.189379 \nL 364.427131 115.92 \n\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\n   </g>\n   <g id=\"patch_3\">\n    <path d=\"M 44.845313 224.64 \nL 44.845313 7.2 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_4\">\n    <path d=\"M 379.645313 224.64 \nL 379.645313 7.2 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_5\">\n    <path d=\"M 44.845313 224.64 \nL 379.645313 224.64 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_6\">\n    <path d=\"M 44.845313 7.2 \nL 379.645313 7.2 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n  </g>\n </g>\n <defs>\n  <clipPath id=\"pa670338162\">\n   <rect height=\"217.44\" width=\"334.8\" x=\"44.845313\" y=\"7.2\"/>\n  </clipPath>\n </defs>\n</svg>\n",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     }
    }
   ],
   "source": [
    "plt.plot(x,f)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Printing Arrays"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "tags": [
     "outputPrepend"
    ]
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": "[   0    1    2 ... 9997 9998 9999]\n"
    }
   ],
   "source": [
    "print(np.arange(10000))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[   0,    1,    2, ...,   97,   98,   99],\n       [ 100,  101,  102, ...,  197,  198,  199],\n       [ 200,  201,  202, ...,  297,  298,  299],\n       ...,\n       [9700, 9701, 9702, ..., 9797, 9798, 9799],\n       [9800, 9801, 9802, ..., 9897, 9898, 9899],\n       [9900, 9901, 9902, ..., 9997, 9998, 9999]])"
     },
     "metadata": {},
     "execution_count": 25
    }
   ],
   "source": [
    "np.arange(10000).reshape(100, 100)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "想要完整的输出numpy数组，可以改编输出选项，例如使用`set_printoptions`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "# np.set_printoptions(threshold=sys.maxsize)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "# np.arange(10000).reshape(100, 100)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Basic Operations"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "a = np.array([20, 30, 40, 50])\n",
    "b = np.arange(4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([0, 1, 2, 3])"
     },
     "metadata": {},
     "execution_count": 29
    }
   ],
   "source": [
    "b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "c = a - b "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([20, 29, 38, 47])"
     },
     "metadata": {},
     "execution_count": 31
    }
   ],
   "source": [
    "c"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([0, 1, 4, 9])"
     },
     "metadata": {},
     "execution_count": 32
    }
   ],
   "source": [
    "b**2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([ 9.12945251, -9.88031624,  7.4511316 , -2.62374854])"
     },
     "metadata": {},
     "execution_count": 33
    }
   ],
   "source": [
    "10*np.sin(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([ True,  True, False, False])"
     },
     "metadata": {},
     "execution_count": 34
    }
   ],
   "source": [
    "a<35"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "A = np.array([[1,1], [0,1]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "B = np.array([[2,0],[3,4]]) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[2, 0],\n       [0, 4]])"
     },
     "metadata": {},
     "execution_count": 37
    }
   ],
   "source": [
    "# 每个元素相互运算\n",
    "A * B"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[5, 4],\n       [3, 4]])"
     },
     "metadata": {},
     "execution_count": 38
    }
   ],
   "source": [
    "# 矩阵乘法\n",
    "A @ B "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[5, 4],\n       [3, 4]])"
     },
     "metadata": {},
     "execution_count": 39
    }
   ],
   "source": [
    "# 矩阵乘法\n",
    "A.dot(B)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "当两个不同类型的举证相互运算，得到的结果数组会变为两者中更准确的类型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "a = np.ones(3, dtype=np.int32)\n",
    "b = np.linspace(0, pi, 3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "'float64'"
     },
     "metadata": {},
     "execution_count": 41
    }
   ],
   "source": [
    "b.dtype.name"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "c = a + b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([1.        , 2.57079633, 4.14159265])"
     },
     "metadata": {},
     "execution_count": 43
    }
   ],
   "source": [
    "c"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "'float64'"
     },
     "metadata": {},
     "execution_count": 44
    }
   ],
   "source": [
    "c.dtype.name"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([ 0.54030231+0.84147098j, -0.84147098+0.54030231j,\n       -0.54030231-0.84147098j])"
     },
     "metadata": {},
     "execution_count": 46
    }
   ],
   "source": [
    "d = np.exp(c*1j)\n",
    "d"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "'complex128'"
     },
     "metadata": {},
     "execution_count": 47
    }
   ],
   "source": [
    "d.dtype.name"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "a = np.random.random((2, 3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[0.53078705, 0.32535726, 0.20170994],\n       [0.83528265, 0.69394393, 0.53937457]])"
     },
     "metadata": {},
     "execution_count": 49
    }
   ],
   "source": [
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "3.126455389010262"
     },
     "metadata": {},
     "execution_count": 51
    }
   ],
   "source": [
    "a.sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "0.20170993955596273"
     },
     "metadata": {},
     "execution_count": 52
    }
   ],
   "source": [
    "a.min()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "0.8352826456312684"
     },
     "metadata": {},
     "execution_count": 53
    }
   ],
   "source": [
    "a.max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [],
   "source": [
    "b = np.arange(12).reshape(3, 4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[ 0,  1,  2,  3],\n       [ 4,  5,  6,  7],\n       [ 8,  9, 10, 11]])"
     },
     "metadata": {},
     "execution_count": 55
    }
   ],
   "source": [
    "b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([12, 15, 18, 21])"
     },
     "metadata": {},
     "execution_count": 56
    }
   ],
   "source": [
    "b.sum(axis=0) # 计算每一列的和"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([0, 4, 8])"
     },
     "metadata": {},
     "execution_count": 58
    }
   ],
   "source": [
    "b.min(axis=1) # 计算每一行的最小值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[ 0,  1,  3,  6],\n       [ 4,  9, 15, 22],\n       [ 8, 17, 27, 38]])"
     },
     "metadata": {},
     "execution_count": 59
    }
   ],
   "source": [
    "b.cumsum(axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [],
   "source": [
    "B = np.arange(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([0, 1, 2])"
     },
     "metadata": {},
     "execution_count": 61
    }
   ],
   "source": [
    "B"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([1.        , 2.71828183, 7.3890561 ])"
     },
     "metadata": {},
     "execution_count": 62
    }
   ],
   "source": [
    "np.exp(B)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([0.        , 1.        , 1.41421356])"
     },
     "metadata": {},
     "execution_count": 63
    }
   ],
   "source": [
    "np.sqrt(B)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [],
   "source": [
    "C = np.array([2.,-1., 4.])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([2., 0., 6.])"
     },
     "metadata": {},
     "execution_count": 65
    }
   ],
   "source": [
    "np.add(B, C)"
   ]
  }
 ],
 "metadata": {
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.9-final"
  },
  "orig_nbformat": 2,
  "kernelspec": {
   "name": "python36964bit993ec77479a3441f817fdc4955f087a8",
   "display_name": "Python 3.6.9 64-bit"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}